<!DOCTYPE html>
<html lang="cn" class="js csstransforms3d">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="Cache-Control" content="max-age=7200" />
    <meta name="generator" content="Hugo 0.70.0" />
    <meta name="description" content="">
    <meta name="buildDate" content="2020-07-30 15:35:12">


    <link rel="shortcut icon" href="https://shardingsphere.apache.org/document/current/img/favicon.png" type="image/x-icon" />

    <title>ElasticJob发布指南 :: ShardingSphere</title>
    
    
    <link href="https://shardingsphere.apache.org/community/css/nucleus.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/font-awesome.min.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/hybrid.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/featherlight.min.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/perfect-scrollbar.min.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/auto-complete.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/theme.css?1596123312" rel="stylesheet">
    <link href="https://shardingsphere.apache.org/community/css/hugo-theme.css?1596123312" rel="stylesheet">
    
      <link href="https://shardingsphere.apache.org/community/css/theme-black.css?1596123312" rel="stylesheet">
    

    <script src="https://shardingsphere.apache.org/community/js/jquery-2.x.min.js?1596123312"></script>
    
    <style type="text/css">
      :root #header + #content > #left > #rlblock_left{ 
          display:none !important;
      }
      
    </style>
    

  </head>
  <body class="" data-url="/cn/contribute/release-elasticjob/">
    <nav id="sidebar" class="">



  <div id="header-wrapper">
    <div id="header">
      <a href="https://shardingsphere.apache.org/"><img src="https://shardingsphere.apache.org/document/current/img/logo_v2.png" /></a>

    </div>
    
  </div>

    <div class="highlightable">
    <ul class="topics">

        
          
          


 
  
    
    <li data-nav-id="/cn/contribute/" title="参与和贡献" class="dd-item 
        parent
        
        
        ">
      <a href="https://shardingsphere.apache.org/community/cn/contribute/">
          <b>1. </b>参与和贡献
          
      </a>
      
      
        <ul>
          
          
          
          
        
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/subscribe/" title="订阅指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/subscribe/">
        订阅指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/contributor/" title="贡献者指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/contributor/">
        贡献者指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/committer/" title="提交者指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/committer/">
        提交者指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/code-conduct/" title="开发规范" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/code-conduct/">
        开发规范
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/document-contributor/" title="官方文档贡献指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/document-contributor/">
        官方文档贡献指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/release/" title="ShardingSphere发布指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/release/">
        ShardingSphere发布指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/release_ui/" title="ShardingSphere-UI发布指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/release_ui/">
        ShardingSphere-UI发布指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/release-elasticjob/" title="ElasticJob发布指南" class="dd-item active">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob/">
        ElasticJob发布指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/release-elasticjob-ui/" title="ElasticJob-UI发布指南" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob-ui/">
        ElasticJob-UI发布指南
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/cn/contribute/2fa/" title="2FA" class="dd-item ">
        <a href="https://shardingsphere.apache.org/community/cn/contribute/2fa/">
        2FA
        
        </a>
    </li>
     
  
 

            
          
        
        </ul>
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/cn/powered-by/" title="采用公司" class="dd-item 
        
        
        
        ">
      <a href="https://shardingsphere.apache.org/community/cn/powered-by/">
          <b>2. </b>采用公司
          
      </a>
      
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/cn/team/" title="团队" class="dd-item 
        
        
        
        ">
      <a href="https://shardingsphere.apache.org/community/cn/team/">
          <b>3. </b>团队
          
      </a>
      
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/cn/security/" title="安全" class="dd-item 
        
        
        
        ">
      <a href="https://shardingsphere.apache.org/community/cn/security/">
          <b>4. </b>安全
          
      </a>
      
              
    </li>
  
 

          
         
    </ul>

    
    

    
    <section id="prefooter">
      <hr/>
      <ul>
      
        <li>
          <a class="padding">
            <i class="fa fa-fw fa-language"></i>
          <div class="select-style">
            <select id="select-language" onchange="location = this.value;">
          
          
          
              
              
                  
                    
                    
<option id="en" value="/community/en/contribute/release-elasticjob/">English</option>
                    
                  
              
                  
              
          
              
              
                  
              
                  
                    
                    
<option id="cn" value="/community/cn/contribute/release-elasticjob/" selected>简体中文</option>
                    
                  
              
          
        </select>
        <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
          width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
          <g>
            <g id="arrow-drop-down">
              <polygon points="0,63.75 127.5,191.25 255,63.75 		" />
            </g>
          </g>
        </svg>
        </div>
        </a>
        </li>
       
      
      
      </ul>
    </section>
    
    <section id="footer">
      <p></p>

    </section>
  </div>
</nav>





        <section id="body">
        <div id="overlay"></div>
        <div class="padding highlightable">
              
              <div>
                <div id="top-bar">
                
                
                <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
                    <span id="sidebar-toggle-span">
                        <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
                          <i class="fa fa-bars"></i>
                        </a>
                    </span>
                  
                  <span class="links">
                    
          
          
            
            
          
          
            
            
          
          
            <a href='https://shardingsphere.apache.org/community/cn/'>ShardingSphere</a> > <a href='https://shardingsphere.apache.org/community/cn/contribute/'>参与和贡献</a> > ElasticJob发布指南
          
         
          
         
          
           
                  </span>
                </div>
                
              </div>
            </div>
            

        
          <div id="chapter">
        
        <div id="body-inner">
          

        


<h2 id="gpg设置">GPG设置</h2>
<p>详情请参见<a href="https://shardingsphere.apache.org/community/cn/contribute/release/">发布指南</a>。</p>
<h2 id="发布apache-maven中央仓库">发布Apache Maven中央仓库</h2>
<h3 id="设置settingsxml文件">设置settings.xml文件</h3>
<p>将以下模板添加到 <code>~/.m2/settings.xml</code>中，所有密码需要加密后再填入。
加密设置可参考<a href="http://maven.apache.org/guides/mini/guide-encryption.html">这里</a>。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672">&lt;settings&gt;</span>
  <span style="color:#f92672">&lt;servers&gt;</span>
    <span style="color:#f92672">&lt;server&gt;</span>
      <span style="color:#f92672">&lt;id&gt;</span>apache.snapshots.https<span style="color:#f92672">&lt;/id&gt;</span>
      <span style="color:#f92672">&lt;username&gt;</span> <span style="color:#75715e">&lt;!-- APACHE LDAP 用户名 --&gt;</span> <span style="color:#f92672">&lt;/username&gt;</span>
      <span style="color:#f92672">&lt;password&gt;</span> <span style="color:#75715e">&lt;!-- APACHE LDAP 加密后的密码 --&gt;</span> <span style="color:#f92672">&lt;/password&gt;</span>
    <span style="color:#f92672">&lt;/server&gt;</span>
    <span style="color:#f92672">&lt;server&gt;</span>
      <span style="color:#f92672">&lt;id&gt;</span>apache.releases.https<span style="color:#f92672">&lt;/id&gt;</span>
      <span style="color:#f92672">&lt;username&gt;</span> <span style="color:#75715e">&lt;!-- APACHE LDAP 用户名 --&gt;</span> <span style="color:#f92672">&lt;/username&gt;</span>
      <span style="color:#f92672">&lt;password&gt;</span> <span style="color:#75715e">&lt;!-- APACHE LDAP 加密后的密码 --&gt;</span> <span style="color:#f92672">&lt;/password&gt;</span>
    <span style="color:#f92672">&lt;/server&gt;</span>
  <span style="color:#f92672">&lt;/servers&gt;</span>
<span style="color:#f92672">&lt;/settings&gt;</span>
</code></pre></div><h3 id="更新版本说明">更新版本说明</h3>
<p>在Github主干上更新如下文件，并提交PR到主干：</p>
<pre><code>https://github.com/apache/shardingsphere-elasticjob/blob/master/RELEASE-NOTES.md
</code></pre><h3 id="创建发布分支">创建发布分支</h3>
<p>假设从github下载的ElasticJob源代码在<code>~/elasticjob/</code>目录；假设即将发布的版本为<code>${RELEASE.VERSION}</code>。
创建<code>${RELEASE.VERSION}-release</code>分支，接下来的操作都在该分支进行。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#75715e">## ${name}为源码所在分支，如：master，dev-4.x</span>
git clone --branch <span style="color:#e6db74">${</span>name<span style="color:#e6db74">}</span> https://github.com/apache/shardingsphere-elasticjob.git ~/elasticjob
cd ~/elasticjob/
git pull
git checkout -b <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release
git push origin <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release
</code></pre></div><h3 id="发布预校验">发布预校验</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:prepare -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;-DskipTests&#34;</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -DdryRun<span style="color:#f92672">=</span>true -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github用户名<span style="color:#e6db74">}</span>
</code></pre></div><p>-Prelease: 选择release的profile，这个profile会打包所有源码和jar文件。</p>
<p>-DautoVersionSubmodules=true：作用是发布过程中版本号只需要输入一次，不必为每个子模块都输入一次。</p>
<p>-DdryRun=true：演练，即不产生版本号提交，不生成新的tag。</p>
<h3 id="准备发布">准备发布</h3>
<p>首先清理发布预校验本地信息。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:clean
</code></pre></div><p>然后准备执行发布。发布之前需要更新<code>examples</code>模块的pom，将版本由${CURRENT.VERSION}替换为${RELEASE.VERSION}。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:prepare -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;-DskipTests&#34;</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -DpushChanges<span style="color:#f92672">=</span>false -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github用户名<span style="color:#e6db74">}</span>
</code></pre></div><p>和上一步演练的命令基本相同，去掉了-DdryRun=true参数。</p>
<p>-DpushChanges=false：不要将修改后的版本号和tag自动提交至Github。</p>
<p>将本地文件检查无误后，提交至github。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git push
git push origin --tags
</code></pre></div><h3 id="部署发布">部署发布</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:perform -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;-DskipTests&#34;</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github用户名<span style="color:#e6db74">}</span>
</code></pre></div><p>执行完该命令后，待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。
访问https://repository.apache.org/#stagingRepositories, 使用Apache的LDAP账户登录后，就会看到上传的版本，<code>Repository</code>列的内容即为${STAGING.REPOSITORY}。
点击<code>Close</code>来告诉Nexus这个构建已经完成，只有这样该版本才是可用的。
如果电子签名等出现问题，<code>Close</code>会失败，可以通过<code>Activity</code>查看失败信息。</p>
<h2 id="发布apache-svn仓库">发布Apache SVN仓库</h2>
<h3 id="检出shardingsphere发布目录">检出shardingsphere发布目录</h3>
<p>如无本地工作目录，则先创建本地工作目录。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir -p ~/ss_svn/dev/
cd ~/ss_svn/dev/
</code></pre></div><p>创建完毕后，从Apache SVN检出shardingsphere发布目录。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn --username<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>APACHE LDAP 用户名<span style="color:#e6db74">}</span> co https://dist.apache.org/repos/dist/dev/shardingsphere
cd ~/ss_svn/dev/shardingsphere
</code></pre></div><h3 id="添加gpg公钥">添加gpg公钥</h3>
<p>仅第一次部署的账号需要添加，只要<code>KEYS</code>中包含已经部署过的账户的公钥即可。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg -a --export <span style="color:#e6db74">${</span>GPG用户名<span style="color:#e6db74">}</span> &gt;&gt; KEYS
</code></pre></div><h3 id="将待发布的内容添加至svn目录">将待发布的内容添加至SVN目录</h3>
<p>创建版本号目录。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir -p ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cd ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
</code></pre></div><p>将源码包和二进制包添加至SVN工作目录。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">cp -f ~/elasticjob/elasticjob-distribution/elasticjob-src-distribution/target/*.zip ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-src-distribution/target/*.zip.asc ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-lite-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-lite-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-cloud-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-cloud-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-cloud-scheduler-distribution/target/*.tar.gz ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
cp -f ~/elasticjob/elasticjob-distribution/elasticjob-cloud-scheduler-distribution/target/*.tar.gz.asc ~/ss_svn/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>
</code></pre></div><h3 id="生成文件签名">生成文件签名</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">shasum -a <span style="color:#ae81ff">512</span> apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip &gt;&gt; apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip.sha512
shasum -b -a <span style="color:#ae81ff">512</span> apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-lite-bin.tar.gz &gt;&gt; apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-lite-bin.tar.gz.sha512
shasum -b -a <span style="color:#ae81ff">512</span> apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-bin.tar.gz &gt;&gt; apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-bin.tar.gz.sha512
shasum -b -a <span style="color:#ae81ff">512</span> apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-scheduler-bin.tar.gz &gt;&gt; apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-scheduler-bin.tar.gz.sha512
</code></pre></div><h3 id="提交apache-svn">提交Apache SVN</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn add *
svn --username<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>APACHE LDAP 用户名<span style="color:#e6db74">}</span> commit -m <span style="color:#e6db74">&#34;release elasticjob-</span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
</code></pre></div><h2 id="检查发布结果">检查发布结果</h2>
<h3 id="检查sha512哈希">检查sha512哈希</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">shasum -c apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip.sha512
shasum -c apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-lite-bin.tar.gz.sha512
shasum -c apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-bin.tar.gz.sha512
shasum -c apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-scheduler-bin.tar.gz.sha512
</code></pre></div><h3 id="检查gpg签名">检查gpg签名</h3>
<p>首先导入发布人公钥。从svn仓库导入KEYS到本地环境。（发布版本的人不需要再导入，帮助做验证的人需要导入，用户名填发版人的即可）</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">curl https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS &gt;&gt; KEYS
gpg --import KEYS
gpg --edit-key <span style="color:#e6db74">&#34;</span><span style="color:#e6db74">${</span>发布人的gpg用户名<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
  &gt; trust

Please decide how far you trust this user to correctly verify other users<span style="color:#e6db74">&#39; keys
</span><span style="color:#e6db74">(by looking at passports, checking fingerprints from different sources, etc.)
</span><span style="color:#e6db74">
</span><span style="color:#e6db74">  1 = I don&#39;</span>t know or won<span style="color:#960050;background-color:#1e0010">&#39;</span>t say
  2 <span style="color:#f92672">=</span> I <span style="color:#66d9ef">do</span> NOT trust
  3 <span style="color:#f92672">=</span> I trust marginally
  4 <span style="color:#f92672">=</span> I trust fully
  5 <span style="color:#f92672">=</span> I trust ultimately
  m <span style="color:#f92672">=</span> back to the main menu

Your decision? <span style="color:#ae81ff">5</span>

  &gt; save
</code></pre></div><p>然后进行gpg签名检查。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --verify apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip.asc apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip
gpg --verify apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-lite-bin.tar.gz.asc apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-lite-bin.tar.gz
gpg --verify apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-bin.tar.gz.asc apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-bin.tar.gz
gpg --verify apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-scheduler-bin.tar.gz.asc apache-shardingsphere-elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-cloud-scheduler-bin.tar.gz
</code></pre></div><h3 id="检查发布文件内容">检查发布文件内容</h3>
<h4 id="对比源码包与github上tag的内容差异">对比源码包与Github上tag的内容差异</h4>
<pre><code>curl -Lo tag-${RELEASE.VERSION}.zip https://github.com/apache/shardingsphere-elasticjob/archive/${RELEASE.VERSION}.zip
unzip tag-${RELEASE.VERSION}.zip
unzip apache-shardingsphere-elasticjob-${RELEASE.VERSION}-src.zip
diff -r apache-shardingsphere-elasticjob-${RELEASE.VERSION}-src-release shardingsphere-elasticjob-${RELEASE.VERSION}
</code></pre><h4 id="检查源码包的文件内容">检查源码包的文件内容</h4>
<ul>
<li>检查源码包是否包含由于包含不必要文件，致使tarball过于庞大</li>
<li>存在<code>LICENSE</code>和<code>NOTICE</code>文件</li>
<li><code>NOTICE</code>文件中的年份正确</li>
<li>只存在文本文件，不存在二进制文件</li>
<li>所有文件的开头都有ASF许可证</li>
<li>能够正确编译，单元测试可以通过 (./mvnw install)</li>
<li>检查是否有多余文件或文件夹，例如空文件夹等</li>
</ul>
<h4 id="检查二进制包的文件内容">检查二进制包的文件内容</h4>
<p>解压缩<code>apache-shardingsphere-elasticjob-${RELEASE.VERSION}-lite-bin.tar.gz</code>，<code>apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-bin.tar.gz</code>
和<code>apache-shardingsphere-elasticjob-${RELEASE.VERSION}-cloud-scheduler-bin.tar.gz</code>
进行如下检查:</p>
<ul>
<li>存在<code>LICENSE</code>和<code>NOTICE</code>文件</li>
<li><code>NOTICE</code>文件中的年份正确</li>
<li>所有文本文件开头都有ASF许可证</li>
<li>检查第三方依赖许可证：
<ul>
<li>第三方依赖的许可证兼容</li>
<li>所有第三方依赖的许可证都在<code>LICENSE</code>文件中声名</li>
<li>依赖许可证的完整版全部在<code>license</code>目录</li>
<li>如果依赖的是Apache许可证并且存在<code>NOTICE</code>文件，那么这些<code>NOTICE</code>文件也需要加入到版本的<code>NOTICE</code>文件中</li>
</ul>
</li>
</ul>
<h2 id="发起投票">发起投票</h2>
<h3 id="投票阶段">投票阶段</h3>
<ol>
<li>
<p>ShardingSphere社区投票，发起投票邮件到<code>dev@shardingsphere.apache.org</code>。PMC需要先按照文档检查版本的正确性，然后再进行投票。
经过至少72小时并统计到3个<code>+1 PMC member</code>票后，即可进入下一阶段的投票。</p>
</li>
<li>
<p>宣布投票结果,发起投票结果邮件到<code>dev@shardingsphere.apache.org</code>。</p>
</li>
</ol>
<h3 id="投票模板">投票模板</h3>
<ol>
<li>ShardingSphere社区投票模板</li>
</ol>
<p>标题：</p>
<pre><code>[VOTE] Release Apache ShardingSphere ElasticJob-${RELEASE.VERSION}
</code></pre><p>正文：</p>
<pre><code>Hello ShardingSphere Community,

This is a call for vote to release Apache ShardingSphere ElasticJob-${RELEASE.VERSION}

Release notes:
https://github.com/apache/shardingsphere-elasticjob/blob/master/RELEASE-NOTES.md

The release candidates:
https://dist.apache.org/repos/dist/dev/shardingsphere/elasticjob-${RELEASE.VERSION}/

Maven 2 staging repository:
https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/shardingsphere/

Git tag for the release:
https://github.com/apache/shardingsphere-elasticjob/tree/${RELEASE.VERSION}/

Release Commit ID:
https://github.com/apache/shardingsphere-elasticjob/commit/xxxxxxxxxxxxxxxxxxxxxxx

Keys to verify the Release Candidate:
https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS

Look at here for how to verify this release candidate:
https://shardingsphere.apache.org/community/en/contribute/release-elasticjob/

GPG user ID:
${YOUR.GPG.USER.ID}

The vote will be open for at least 72 hours or until necessary number of votes are reached.

Please vote accordingly:

[ ] +1 approve 

[ ] +0 no opinion
 
[ ] -1 disapprove with the reason

PMC vote is +1 binding, all others is +1 non-binding.

Checklist for reference:

[ ] Download links are valid.

[ ] Checksums and PGP signatures are valid.

[ ] Source code distributions have correct names matching the current release.

[ ] LICENSE and NOTICE files are correct for each ShardingSphere repo.

[ ] All files have license headers if necessary.

[ ] No compiled archives bundled in source archive.
</code></pre><ol start="2">
<li>宣布投票结果模板：</li>
</ol>
<p>正文：</p>
<pre><code>The vote to release Apache ShardingSphere ElasticJob-${RELEASE.VERSION} has passed.

7 PMC member +1 binding votes:

xxx
xxx
xxx
xxx
xxx
xxx
xxx

1 community +1 non-binding vote:
xxx

Thank you everyone for taking the time to review the release and help us. 
</code></pre><ol start="3">
<li>宣布投票结果模板：</li>
</ol>
<p>标题：</p>
<pre><code>[RESULT][VOTE] Release Apache ShardingSphere ElasticJob-${RELEASE.VERSION}
</code></pre><p>正文：</p>
<pre><code>We’ve received 3 +1 binding votes and one +1 non-binding vote:

+1 binding, xxx
+1 binding, xxx
+1 binding, xxx

+1 non-binding, xxx

Thank you everyone for taking the time to review the release and help us. 
I will process to publish the release and send ANNOUNCE.
</code></pre><h2 id="完成发布">完成发布</h2>
<h3 id="将源码二进制包以及keys从svn的dev目录移动到release目录">将源码、二进制包以及KEYS从svn的dev目录移动到release目录</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn mv https://dist.apache.org/repos/dist/dev/shardingsphere/elasticjob-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> https://dist.apache.org/repos/dist/release/shardingsphere/ -m <span style="color:#e6db74">&#34;transfer packages for elasticjob-</span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
svn delete https://dist.apache.org/repos/dist/release/shardingsphere/KEYS -m <span style="color:#e6db74">&#34;delete KEYS&#34;</span>
svn cp https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS https://dist.apache.org/repos/dist/release/shardingsphere/ -m <span style="color:#e6db74">&#34;transfer KEYS for elasticjob-</span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
</code></pre></div><h3 id="在apache-staging仓库找到shardingsphere并点击release">在Apache Staging仓库找到ShardingSphere并点击<code>Release</code></h3>
<h3 id="合并github的release分支到master-合并完成后删除release分支">合并Github的release分支到<code>master</code>, 合并完成后删除release分支</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git checkout master
git merge origin/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release
git push
git push --delete origin <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release
</code></pre></div><h3 id="更新下载页面">更新下载页面</h3>
<p><a href="https://shardingsphere.apache.org/elasticjob/current/en/downloads/">https://shardingsphere.apache.org/elasticjob/current/en/downloads/</a></p>
<p><a href="https://shardingsphere.apache.org/elasticjob/current/cn/downloads/">https://shardingsphere.apache.org/elasticjob/current/cn/downloads/</a></p>
<p>GPG签名文件和哈希校验文件的下载连接应该使用这个前缀： <code>https://downloads.apache.org/shardingsphere/</code></p>
<p><code>最新版本</code>中保留一个最新的版本。</p>
<h3 id="github版本发布">GitHub版本发布</h3>
<p>在<a href="https://github.com/apache/shardingsphere-elasticjob/releases">GitHub Releases</a>页面的<code>${RELEASE_VERSION}</code>版本上点击<code>Edit</code></p>
<p>编辑版本号及版本说明，并点击<code>Publish release</code></p>
<h3 id="发送邮件到devshardingsphereapacheorg和announceapacheorg通知完成版本发布">发送邮件到<code>dev@shardingsphere.apache.org</code>和<code>announce@apache.org</code>通知完成版本发布</h3>
<p>通知邮件模板：</p>
<p>标题：</p>
<pre><code>[ANNOUNCE] Apache ShardingSphere ElasticJob-${RELEASE.VERSION} available
</code></pre><p>正文：</p>
<pre><code>Hi all,

Apache ShardingSphere Team is glad to announce the new release of Apache ShardingSphere ElasticJob-${RELEASE.VERSION}.

ElasticJob is a distributed scheduling solution consisting of two separate projects, ElasticJob-Lite and ElasticJob-Cloud.
Through the functions of flexible scheduling, resource management and job management, it creates a distributed scheduling solution suitable for Internet scenarios, and provides diversified job ecosystem through open architecture design. It uses a unified job API for each project. Developers only need code one time and can deploy at will.
ElasticJob became an Apache ShardingSphere Sub project on May 28 2020.

Download Links: https://shardingsphere.apache.org/elasticjob/current/en/downloads/

Release Notes: https://github.com/apache/shardingsphere-elasticjob/blob/master/RELEASE-NOTES.md

Website: http://shardingsphere.apache.org/elasticjob/

ShardingSphere Resources:
- Issue: https://github.com/apache/shardingsphere-elasticjob/issues/
- Mailing list: dev@shardingsphere.apache.org
- Documents: https://shardingsphere.apache.org/elasticjob/current/en/overview/



- Apache ShardingSphere Team

</code></pre>

<footer class=" footline" >
	
</footer>


        
            </div> 
        
        </div> 
        

      </div>

    <div id="navigation">
        
        
        
        
            
            
                
                    
                    
                
                

                    
                    
                        
                    
                    

                    
                        
            
            
                
                    
                    
                
                

                    
                    
                    

                    
                        
            
            
                
                    
                        
                        
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                        
                        
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
            
        
        
        


        
            <a class="nav nav-prev" href="https://shardingsphere.apache.org/community/cn/contribute/release_ui/" title="ShardingSphere-UI发布指南"> <i class="fa fa-chevron-left"></i></a>
        
        
            <a class="nav nav-next" href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob-ui/" title="ElasticJob-UI发布指南" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
        
    </div>

    </section>
    
    <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
      <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
    </div>
    <script src="https://shardingsphere.apache.org/community/js/clipboard.min.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/perfect-scrollbar.min.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/perfect-scrollbar.jquery.min.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/jquery.sticky.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/featherlight.min.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/html5shiv-printshiv.min.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/highlight.pack.js?1596123312"></script>
    <script>hljs.initHighlightingOnLoad();</script>
    <script src="https://shardingsphere.apache.org/community/js/modernizr.custom.71422.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/learn.js?1596123312"></script>
    <script src="https://shardingsphere.apache.org/community/js/hugo-learn.js?1596123312"></script>

    

  </body>
</html>

